const { DataTypes, Sequelize } = require('sequelize');
const moment = require('moment'); // 引入 moment 库
const sequelize = require("@/db/seq");

// const sequelize = require('@/db/seq'); // 引入 sequelize 实例

// 定义用户模型
const Tag = sequelize.define('blog_tag', {
  // id: {
  //   type: DataTypes.INTEGER,
  //   primaryKey: true,
  //   autoIncrement: true,
  // },
  //  id会自动生成
  name: {
    type: DataTypes.STRING, // VARCHAR(255)
    allowNull: false,
    unique: true,
    comment: '名称，唯一', // 添加字段描述
  },
  createdAt: {
    type: DataTypes.DATE, // DATETIME
    defaultValue: Sequelize.NOW, // 默认值为当前时间
    get() { // 自定义 getter 方法
      // 获取当前实例的 createdAt 字段值
      const createdAt = this.getDataValue('createdAt');
      return moment(createdAt).format('YYYY-MM-DD HH:mm:ss'); // 格式化时间
    },
    comment: '创建时间',
  },
  updatedAt: {
    type: DataTypes.DATE, // DATETIME
    defaultValue: Sequelize.NOW, // 默认值为当前时间
    comment: '更新时间',
    get() { // 自定义 getter 方法
      // 获取当前实例的 updatedAt 字段值
      const updatedAt = this.getDataValue('updatedAt');
      return moment(updatedAt).format('YYYY-MM-DD HH:mm:ss'); // 格式化时间
    },
  },
},
  {
    freezeTableName: true, // 禁用表名复数
  }
  
)
// 同步数据库
// 需要在数据库中创建表时使用
// Tag.sync({ 
//   // force: false, // 是否强制同步，true: 强制同步，false: 不强制同步
//   alter: true, // 是否自动更新表结构，true: 自动更新，false: 不自动更新
// })
//   .then(() => {
//     console.log('tag table synced successfully');
//   })
//   .catch((err) => {
//     console.error('Error syncing tag table:', err);
//   });
// 导出模型
Tag.associate = (models) => {
  Tag.belongsToMany(models.blog_article, {
    through: 'blog_article_tag',
    foreignKey: 'tag_id',
    otherKey: 'article_id',
    as: 'articles'
  });
};
module.exports = Tag;